///说明文件
/*******************************************
 * 1、打开数据库
 * 2、关闭数据库
 *
 *******************************************
 * 3、创建表格
 *       列表格式（表名，{表头[X] 类型},{表头[X] 类型}……）
 *       "KEY"默认为创建自增主键，表头id
 * 4、重命名表格
 * 5、删除表格
 * 6、表格添加新列
 *       QString new_column 为{表头[X] 类型}
 *
 *******************************************
 * 7、插入新行
 *       列表格式（表名，{表头[X]，数值},{表头[X]，数值}……）
 * 8、更新某行
 *       列表格式（表名，{表头[X]，数值},{表头[X]，数值}……，{表头[Y]，数值}）
 * 9、删除某行
 *       列表格式（表名，ID表头，ID）
 *
 *******************************************
 * 10、重命名ID
 *       列表格式（表名，ID表头，旧ID，新ID）
 * 11、获取某一行
 *       列表格式（表名，{表头[X],表头[X],表头[X]……}，{ID表头，ID[Y]}）
 *       返回X和Y对应的值
 * 12、获取最大ID
 * 13、获取最小ID
 *
 *******************************************/

#ifndef XSQL_H
#define XSQL_H

#include <QObject>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QSqlDriver>
#include <QDateTime>

class XSQL : public QObject
{
    Q_OBJECT
public:
    explicit XSQL(QObject *parent = nullptr);

    //数据库开关
    bool open(QSqlDatabase &data, QString path, QString connect);
    bool close(QSqlDatabase &data);

    //表格操作
    bool create_table(QSqlDatabase &data, QList<QString> list);
    bool rename_table(QSqlDatabase &data, QString old_name, QString new_name);
    bool delete_table(QSqlDatabase &data, QString name);

    //列操作
    bool add_column(QSqlDatabase &data, QString table_name, QString new_column);

    //行操作
    bool insert_row(QSqlDatabase &data, QList<QVariant> list);
    bool update_row(QSqlDatabase &data, QList<QVariant> list);
    bool delete_row(QSqlDatabase &data, QList<QVariant> list);

    //行列操作
    bool rename_id(QSqlDatabase &data, QList<QVariant> list);

    //获取数据
    QList<QVariant> get_row(QSqlDatabase &data, QList<QVariant> list);

    //其他
    int get_max_id(QSqlDatabase &data, QString table_name);
    int get_min_id(QSqlDatabase &data, QString table_name);

    bool table_exists(QSqlQuery &query, QString table_name);
};

#endif // XSQL_H
